home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / HD-Installer / jst_dev / sources / src / loaders / StreetRacer / streetracerhd.asm < prev    next >
Assembly Source File  |  2000-04-12  |  4KB  |  242 lines

  1. ; *** $GAME Hard Disk Loader V$VER
  2. ; *** Written by Jean-François Fabre
  3.  
  4.  
  5.     include    "jst.i"
  6.  
  7.     HD_PARAMS    "",0,0
  8.  
  9. MUSIC_NAME:MACRO
  10. music\1name:
  11.     dc.b    "MOD"
  12.     dc.b    \2
  13.     dc.b    ".PAK",0
  14.     ENDM
  15.  
  16. BUILD_TABLE:MACRO
  17.     lea    MusicTable(pc),A0
  18.     lea    music\1name(pc),A1
  19.     move.l    #\2,(A0,8*(\1-1))    ; disk offset
  20.     move.l    A1,(A0,8*(\1-1)+4)    ; pointer on filename
  21.     ENDM
  22.  
  23. loader:
  24.     tst.l    D5
  25.     bne    LowmemErr
  26.  
  27.     Mac_printf    "Street Racer HD version V1.1"
  28.     Mac_printf    "Coded by Jean-François Fabre © 1997"
  29.     Mac_printf    "Thanks to K. Krellwitz for stack fix"
  30.  
  31.     JSRGEN    CheckAGA
  32.     tst.l    D0
  33.     bne    AgaErr
  34.     
  35.     JSRABS    CheckFastMem
  36.     tst.l    D0
  37.     beq    MemErr
  38.  
  39.     ; set current directory for load files
  40.  
  41.     lea    datadir(pc),A0
  42.     JSRABS    SetFilesPath
  43.  
  44.     ; check if the main proggy is here
  45.  
  46.     TESTFILE    mainname
  47.     tst.l    D0
  48.     bne    MainErr
  49.  
  50.     ; load the files in the data dir
  51.  
  52.     JSRABS    LoadFiles
  53.  
  54.     BUILD_TABLE    1,$21C
  55.     BUILD_TABLE    2,$234
  56.     BUILD_TABLE    3,$1D4
  57.     BUILD_TABLE    4,$24C
  58.     BUILD_TABLE    5,$204
  59.     BUILD_TABLE    6,$15C
  60.     BUILD_TABLE    7,$1A4
  61.     BUILD_TABLE    8,$1EC
  62.     BUILD_TABLE    9,$174
  63.     BUILD_TABLE    10,$1BC
  64.  
  65.     moveq.l    #0,D0
  66.     move.l    #CACRF_CopyBack,D1
  67.     JSRABS    Degrade
  68.  
  69. ;    WAIT_LMB
  70.  
  71.     GO_SUPERVISOR
  72.     SAVE_OSDATA    $200000
  73.     JSRGEN    FreezeAll
  74.  
  75.     lea        $1ffffc,a7                ;Abaddon added and now the game works
  76.                                     ;Same error I got with Dennis AGA and Out to Lunch AGA
  77.  
  78.     bsr    InstallBoot
  79.  
  80.     JSRGEN    FlushCachesHard
  81.  
  82.     jmp    ($48D00)
  83.  
  84. InstallBoot:
  85.     lea    mainname(pc),A0
  86.     lea    $48D00,A1
  87.     moveq.l    #0,D0
  88.     moveq.l    #-1,D1
  89.     JSRGEN    ReadFile        ; read the program file
  90.     move.l    A1,A0
  91.     JSRGEN    RNCDecrunch        ; unpack it
  92.  
  93.     PATCHUSRJSR    $1C321E,KbInt    ; keyboard patch
  94.     PATCHUSRJMP    $4A874,Clear    ; faster clr
  95.     PATCHUSRJMP    $4A748,Decrunch1; faster decrunch
  96.     PATCHUSRJMP    $4A3E8,Decrunch2; faster decrunch
  97.  
  98.     PATCHGENJMP    $1C0AA2,RNCDecrunch
  99.     PATCHUSRJSR    $1C0E0E,LoadMusic    ; disk routine
  100.  
  101.     move.w    #$6006,$49A7E        ; no force PAL
  102.     move.w    #$6006,$49AEA
  103.  
  104.     ; copper store
  105.  
  106.     lea    $4A000,A0
  107.     lea    $4A100,A1
  108.     move.l    #$6,D0
  109.     move.l    #$F,D1
  110.     JSRGEN    PatchMoveCList_Idx
  111.     rts
  112.  
  113. LoadMusic:
  114.     STORE_REGS
  115.     
  116.     move.l    A0,A1
  117.  
  118.     bsr    SearchFile
  119.     cmp.l    #0,A0
  120.     bne    read$    ; file found
  121.  
  122.     lea    music11name(pc),A0    ; not found
  123.     bra    read$            ; load race music
  124.  
  125.     RESTORE_REGS
  126.     lea    $BFE201,A4
  127.     rts
  128. read$
  129.  
  130.     moveq.l    #0,D0
  131.     moveq.l    #-1,D1
  132.     JSRGEN    ReadFile
  133.     tst.l    D0
  134.     bne    filenotfound$
  135.     RESTORE_REGS
  136.     moveq    #0,D0
  137.     addq.l    #4,A7    ; pops up stack
  138.     rts
  139.  
  140. filenotfound$
  141.     lea    FileErr(pc),A0
  142.     JSRGEN    SetExitRoutine
  143.     JSRGEN    InGameExit
  144.     bra    filenotfound$
  145.  
  146. SearchFile:
  147.     lea    MusicTable(pc),A2
  148. loop$
  149.     move.l    (A2)+,D2
  150.     beq    end$
  151.     cmp.l    D0,D2
  152.     beq    end$
  153.     addq.l    #4,A2
  154.     bra    loop$
  155. end$
  156.     move.l    (A2),A0    ; 0 or valid filename pointer
  157.     rts
  158.  
  159. Clear:
  160.     LEA    $29500,A0
  161.     MOVE.L    #$00003EFF,D7
  162.     BSR    clrloop$
  163.     LEA    $39100,A0
  164.     MOVE.L    #$00003EFF,D7
  165. clrloop$:
  166.     CLR.L    (A0)+
  167.     DBF    D7,clrloop$
  168.     ADDQ    #1,D7
  169.     SUBQ.L    #1,D7
  170.     BPL.S    clrloop$
  171.     RTS
  172.  
  173. KbInt:
  174.     move.b    D0,($1C3330)
  175.     cmp.b    #$59,D0
  176.     bne    noquit$
  177.     JSRGEN    InGameExit
  178. noquit$:
  179.     cmp.b    #$42,D0
  180.     bne    noicon$
  181.     JSRGEN    InGameIconify
  182.     move.w    #$400F,$DFF000+fmode
  183. noicon$:
  184.     rts
  185.  
  186. MainErr:
  187.     Mac_printf    "** Program file not found"
  188.     JMPABS    CloseAll
  189.  
  190. AgaErr:
  191.     Mac_printf    "** This game needs a A1200 or A4000 to run!"
  192.     JMPABS    CloseAll
  193.  
  194. MemErr:
  195.     Mac_printf    "** This game needs 2MB of fastmem to run."
  196.     JMPABS    CloseAll
  197.  
  198. LowmemErr:
  199.     Mac_printf    "** This loader does not support LOWMEM!"
  200.     JMPABS    CloseAll
  201.  
  202. FileErr:
  203.     Mac_printf    "** Run-time error: file not found"
  204.     Mac_printf    "   Hit RETURN to exit"
  205.     JSRABS    WaitReturn
  206.     rts
  207.  
  208. mainname:
  209.     dc.b    "MAIN.PAK",0
  210.  
  211.     MUSIC_NAME    1, "HOD"
  212.     MUSIC_NAME    2, "FRA"
  213.     MUSIC_NAME    3, "SUZ"
  214.     MUSIC_NAME    4, "BIF"
  215.     MUSIC_NAME    5, "RAP"
  216.     MUSIC_NAME    6, "SUR"
  217.     MUSIC_NAME    7, "HEL"
  218.     MUSIC_NAME    8, "SUM"
  219.     MUSIC_NAME    9, "RUM"
  220.     MUSIC_NAME    10,"END"
  221.     MUSIC_NAME    11,"RAC"
  222.  
  223.     cnop    0,4
  224.  
  225. trainer:
  226.     dc.l    0
  227. ExtBase:
  228.     dc.l    0
  229.  
  230. datadir:
  231.     dc.b    "data",0
  232.     cnop    0,4
  233.  
  234. MusicTable:
  235.     blk.l    $20,0
  236.  
  237. Decrunch1:
  238.     incbin    "decr4A748"
  239.     even
  240. Decrunch2:
  241.     incbin    "decr4A3E8"
  242.